def(arrayMethods,method,function mutator (...args) {
  const result = original.apply(this,args)
  const ob = this.__ob__
  // 如果是新增方法需要继续响应式的操作
  let inserted
  switch(method) {
    case 'push':
    case 'unshift':
      inserted = args
      break
    case 'splice':
      inserted = args.slice(2)
      break
  }
  // 社会主义洗礼
  if (inserted) ob.observeArray(inserted)
  ob.dep.notify()
  return result
}

// 然后覆盖原型就可以了！

obj = {foo:'foo'}
// 不可以的操作
obj.bar = 'aaa'

// 可以的操作
Vue.set(obj,'bar','aaa')

items = [1,3]
// 不可以的操作
items.length = 0
items[0]='aaa'

// 可以的操作
Vue.set(items,0,'abc')

